package fileFolderCmd;

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;

//Send questions, comments, bug reports, etc. to the authors:

//Rob Warner (rwarner@interspatial.com)
//Robert Harris (rbrt_harris@yahoo.com)

import java.io.File;
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import java.awt.Dimension;
//==================================
//==================================
//==================================
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.ProgressBar;


/**
* ...Currently Not Used... This class uses FileDialog to open up one or multiple files at a time.
* It writes out the file names to the class: DatFile in string arrays
*/
public class ShowFileDialog extends JFrame {
// These filter names are displayed to the user in the file dialog. Note that
// the inclusion of the actual extension in parentheses is optional, and
// doesn't have any effect on which files are displayed.
private static final String[] FILTER_NAMES = {
    "OpenOffice.org Spreadsheet Files (*.sxc)",
    "Microsoft Excel Spreadsheet Files (*.xls)",
    "Comma Separated Values Files (*.csv)", "All Files (*.*)"};

// These filter extensions are used to filter which files are displayed.
private static final String[] FILTER_EXTS = {"*.dat"};// "*.sxc", "*.xls", "*.csv", "*.*"};

private Shell sShell = null;  //  @jve:decl-index=0:visual-constraint="550,69"

private Button sbutton = null;

private Label slabel = null;

private ProgressBar sprogressBar = null;

/**
 * This method initializes 
 * 
 */
public ShowFileDialog() {
	super();
	initialize();
}

/**
 * This method initializes this
 * 
 */
private void initialize() {
        this.setSize(new Dimension(505, 270));
        this.setTitle("A title");
		
}

/**
 * Runs the application
 */
public void run() {
  Display display = new Display();
  Shell shell = new Shell(display);
  shell.setText("File Dialog");
  createContents(shell);
  shell.pack();
  shell.open();
 
  
  while (!shell.isDisposed()) {
    if (!display.readAndDispatch()) {
      display.sleep();
    }
  }
  display.dispose();
}

/**
 * Creates the contents for the window
 * 
 * @param shell the parent shell
 */
public void createContents(final Shell shell) {
	
	
  shell.setLayout(new GridLayout(5, true));

  new Label(shell, SWT.NONE).setText("File Name:");

  final Text fileName = new Text(shell, SWT.BORDER);
  GridData data = new GridData(GridData.FILL_HORIZONTAL);
  data.horizontalSpan = 4;
  fileName.setLayoutData(data);

  Button multi = new Button(shell, SWT.PUSH);
  multi.setText("Open Multiple...");
  multi.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent event) {
		//=======================================
      // User has selected to open multiple files
      FileDialog dlg = new FileDialog(shell, SWT.MULTI);
      dlg.setFilterNames(FILTER_NAMES);
      dlg.setFilterExtensions(FILTER_EXTS);
      String fn = dlg.open();
      if (fn != null) {
        // Append all the selected files. Since getFileNames() returns only 
        // the names, and not the path, prepend the path, normalizing
        // if necessary
        StringBuffer buf = new StringBuffer();
        String[] files = dlg.getFileNames();
        int j = 0;
        for (int k = 0; k <= Data.Name.length; k++){
        	if(Data.Name[j] != null){j++;}
        }
        for (int i = 0, n = files.length; i < n; i++) {
          buf.append(dlg.getFilterPath());
          if (buf.charAt(buf.length() - 1) != File.separatorChar) {
            buf.append(File.separatorChar);
          }
         // for(DatFile.Name[j] != ""){j++;}
          Data.Name[j]= files[i];
          Data.Path[j]= dlg.getFilterPath();
          System.out.println(Data.Name[j]);
          j++;
          
          buf.append(files[i]);
          buf.append(" ");
        }
    //    System.out.println(dlg.getFilterPath());
        fileName.setText(buf.toString());
      //  System.out.println(buf.toString());
		
      }
		//=======================================
    }
  });

  Button open = new Button(shell, SWT.PUSH);
  open.setText("Open...");
  open.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent event) {
      // User has selected to open a single file
      FileDialog dlg = new FileDialog(shell, SWT.OPEN);
      dlg.setFilterNames(FILTER_NAMES);
      dlg.setFilterExtensions(FILTER_EXTS);
      String fn = dlg.open();
      if (fn != null) {
        fileName.setText(fn);
      }
    }
  });

  Button save = new Button(shell, SWT.PUSH);
  save.setText("Save...");
  save.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent event) {
      // User has selected to save a file
      FileDialog dlg = new FileDialog(shell, SWT.SAVE);
      dlg.setFilterNames(FILTER_NAMES);
      dlg.setFilterExtensions(FILTER_EXTS);
      String fn = dlg.open();
      if (fn != null) {
        fileName.setText(fn);
      }
    }
  });
}

/**
 * The application entry point
 * 
 * @param args the command line arguments
 */
public static void main(String[] args) {
  new ShowFileDialog().run();
}
}  //  @jve:decl-index=0:visual-constraint="10,10"




